API Documentation
Public Member Functions | List of all members
nkMemory::BufferView< T > Class Template Reference

A view over data. More...

Public Member Functions

 BufferView ()
 
 BufferView (T *data, unsigned long long size)
 
 BufferView (const Buffer &buffer)
 
 BufferView (const Buffer &buffer, unsigned long long index, unsigned long long length=0)
 
 BufferView (Buffer &&buffer)=delete
 
 ~BufferView ()=default
 
T * getData () const
 
unsigned long long getSize () const
 
bool empty () const
 
T & front ()
 
T & back ()
 
BufferView< T > subView (unsigned long long index, unsigned long long length=0) const
 
T & operator[] (unsigned long long index)
 
const T & operator[] (unsigned long long index) const
 
template<typename U >
 BufferView (BufferCast< U > &bufferCast)
 
 BufferView (BufferCast< T > &bufferCast)
 
template<typename U >
 BufferView (const BufferView< U > &view)
 
 BufferView (const BufferView< T > &view)
 
template<typename U >
 BufferView (std::vector< U > &vec)
 
 BufferView (std::vector< T > &vec)
 
template<typename U , typename = std::enable_if<std::is_const<T>::value>>
 BufferView (const std::vector< U > &vec)
 
template<typename = std::enable_if<std::is_const<T>::value>>
 BufferView (const std::vector< typename std::remove_const< T >::type > &vec)
 

Detailed Description

template<typename T = unsigned char>
class nkMemory::BufferView< T >

A view over data.

Behaves like the BufferCast, but not considered as owner of the memory. This means this variant of the buffer is a good candidate when exchanging data, as it doesn't copy anything but only offers a view over it.

It also allows to cast the data, and alter the way it is intepreted.

Constructor & Destructor Documentation

◆ BufferView() [1/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( )

Default constructor. Creates an empty view.

◆ BufferView() [2/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( T *  data,
unsigned long long  size 
)

Raw data constructor. This will make the view point to the data provided.

Parameters
dataThe data to point to.
sizeThe size of the data provided.

◆ BufferView() [3/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( const Buffer buffer)

Buffer constructor. Offers a view over the data of a buffer.

Parameters
bufferThe buffer which memory has to be pointed.

◆ BufferView() [4/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( const Buffer buffer,
unsigned long long  index,
unsigned long long  length = 0 
)

Buffer sub-part constructor. Offers a view over a sub-part of a buffer.

Parameters
bufferThe buffer which memory has to be pointed.
indexThe starting offset, in number of elements T, at which the view should start.
lengthThe number of elements T the sub-view should have.

◆ BufferView() [5/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( Buffer &&  buffer)
delete

This destructor is deleted, as a Buffer&& will clean up its memory right after assignment. This is unsafe as the new view's memory will be invalid.

Parameters
bufferThe rvalue buffer.

◆ ~BufferView()

template<typename T = unsigned char>
nkMemory::BufferView< T >::~BufferView ( )
default

Destructor. This variant of the buffer classes will not delete the data pointer on destruction.

◆ BufferView() [6/13]

template<typename T = unsigned char>
template<typename U >
nkMemory::BufferView< T >::BufferView ( BufferCast< U > &  bufferCast)

Utility constructor over casts of different type.

Parameters
bufferCastThe buffer cast which data should be pointed.

◆ BufferView() [7/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( BufferCast< T > &  bufferCast)

Utility constructor over casts of the same type.

Parameters
bufferCastThe buffer cast which data should be pointed.

◆ BufferView() [8/13]

template<typename T = unsigned char>
template<typename U >
nkMemory::BufferView< T >::BufferView ( const BufferView< U > &  view)

Utility constructor over a view of another type, reinterpreting the data.

Parameters
viewThe view to reinterpret.

◆ BufferView() [9/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( const BufferView< T > &  view)

Utility copy constructor.

Parameters
viewThe view to copy.

◆ BufferView() [10/13]

template<typename T = unsigned char>
template<typename U >
nkMemory::BufferView< T >::BufferView ( std::vector< U > &  vec)

Utility constructor over a vector which memory will be reinterpreted to another type.

Parameters
vecThe vector which data should be reinterpreted.

◆ BufferView() [11/13]

template<typename T = unsigned char>
nkMemory::BufferView< T >::BufferView ( std::vector< T > &  vec)

Utility constructor over vectors.

Parameters
vecThe vector which data should be pointed.

◆ BufferView() [12/13]

template<typename T = unsigned char>
template<typename U , typename = std::enable_if<std::is_const<T>::value>>
nkMemory::BufferView< T >::BufferView ( const std::vector< U > &  vec)

Utility reinterpreting constructor over a const vector.

Parameters
vecThe vector which data should be reinterpreted.
Remarks
This constructor is only enabled if the view is pointing over a const T (ensuring memory will not be altered).

◆ BufferView() [13/13]

template<typename T = unsigned char>
template<typename = std::enable_if<std::is_const<T>::value>>
nkMemory::BufferView< T >::BufferView ( const std::vector< typename std::remove_const< T >::type > &  vec)

Utility vector constructor, const version.

Parameters
vecThe vector which data should be pointed.
Remarks
This constructor is only enabled if the view is pointing over a const T (ensuring memory will not be altered).

Member Function Documentation

◆ getData()

template<typename T = unsigned char>
T* nkMemory::BufferView< T >::getData ( ) const
Returns
The pointer over the internal data.

◆ getSize()

template<typename T = unsigned char>
unsigned long long nkMemory::BufferView< T >::getSize ( ) const
Returns
The size of the buffer, in number of elements.

◆ empty()

template<typename T = unsigned char>
bool nkMemory::BufferView< T >::empty ( ) const
Returns
Whether the buffer is empty (true) or not (false). An empty buffer has a size of 0.

◆ front()

template<typename T = unsigned char>
T& nkMemory::BufferView< T >::front ( )
Returns
A reference over the first element of the buffer.

◆ back()

template<typename T = unsigned char>
T& nkMemory::BufferView< T >::back ( )
Returns
A reference over the last element of the buffer.

◆ subView()

template<typename T = unsigned char>
BufferView<T> nkMemory::BufferView< T >::subView ( unsigned long long  index,
unsigned long long  length = 0 
) const

Allows to create a view over a subpart of current view.

Parameters
indexThe new view's starting element's index.
lengthThe new view's length, from starting element. If 0, it will default to current view's ending point.
Returns
A new view, which memory will be from index, of size length.

◆ operator[]() [1/2]

template<typename T = unsigned char>
T& nkMemory::BufferView< T >::operator[] ( unsigned long long  index)

Indexing operator.

Parameters
indexThe index of the element to index in the memory.
Returns
A reference over requested element.

◆ operator[]() [2/2]

template<typename T = unsigned char>
const T& nkMemory::BufferView< T >::operator[] ( unsigned long long  index) const

Indexing operator, const versioned.

Parameters
indexThe index of the element to index in the memory.
Returns
A reference over requested element.

The documentation for this class was generated from the following file: